home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 048 (1988-02-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 048 (1988-02-15)(Ossowski, Stefan)(DE)(PD).adf / Mandel / source / menu.c < prev    next >
C/C++ Source or Header  |  1988-01-23  |  13KB  |  366 lines

  1. #include <exec/types.h>
  2. #include <intuition/intuition.h>
  3.  
  4. #define MENUFRONTPEN 2
  5.  
  6. /*
  7.  * Mandelbrot Construction Set                                    V28.08.87
  8.  * ------------------------------------------------------------------------
  9.  *
  10.  * (C) 1987 By Olaf Seibert KosmoSoft Productions.
  11.  */
  12.  
  13. /* First the menu texts */
  14.  
  15. /* (C)             project     options         functions
  16.  * ------------------------------------------------------------
  17.  * About Mandel... new *       colors *        z^2 - c
  18.  *                 open... /O  resolution *    z*c*(1-z)
  19.  *                 save    /S  parameters      z^3 + z*(c-1) - c
  20.  *                 save as...  
  21.  *                 quit    /Q
  22.  *
  23.  * new                colors      resolution
  24.  * -----------------------------------------------
  25.  * absolute pos'n /A  select      normal     /1
  26.  * enlarge        /E  modulo      1/2        /2
  27.  * reduce         /R  ranges      1/3        /3
  28.  * shift          /T  palette /P  1/4        /4
  29.  *                                fill in    /F
  30.  *                                hi-res     /H
  31.  *                                interlace  /L
  32.  *                                borderless /B
  33.  */
  34.  
  35. struct IntuiText menuIText[] =
  36. {
  37.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"About Mandel...", NULL  },    /* 0 */
  38.  
  39.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"New", NULL  },                /* 1 */
  40.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Open...", NULL  },
  41.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Save", NULL  },
  42.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Save As...", NULL  },
  43.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Quit...", NULL  },
  44.  
  45.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Colors", NULL  },            /* 6 */
  46.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Resolution", NULL  },
  47.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Parameters", NULL  },
  48.  
  49.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Z^2-C", NULL  },        /* 9 */
  50.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Z*C*(1-Z)", NULL  },
  51.     {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Z^3+Z*(C-1)-C", NULL  }
  52. };
  53.  
  54. struct IntuiText newSubIT[] =
  55. {  {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Absolute", NULL  },
  56.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Enlarge", NULL  },
  57.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Reduce", NULL  },
  58.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,1,1,NULL, (UBYTE*)"Shift", NULL  },
  59. };
  60.  
  61. struct IntuiText clrsSubIT[] =
  62. {  {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Select", NULL  },
  63.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Modulo", NULL  },
  64.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Ranges", NULL  },
  65.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Palette", NULL  }
  66. };
  67.  
  68. struct IntuiText resSubIT[] =
  69. {  {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Normal", NULL  },
  70.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"1/2", NULL  },
  71.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"1/3", NULL  },
  72.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"1/4", NULL  },
  73.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Fill In", NULL  },
  74.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Hires", NULL  },
  75.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"Interlace", NULL  },
  76.    {  MENUFRONTPEN,AUTOBACKPEN,JAM1,CHECKWIDTH,1,NULL, (UBYTE*)"BorderLess", NULL  }
  77. };
  78.  
  79. struct MenuItem newSubItem[] =
  80. {  /* new submenu: */
  81. #define MWIDTH 74 + COMMWIDTH    /* Funny we need 2 more pixels */
  82. #define MLEFT 40
  83.    /* absolute */
  84.    {  &newSubItem[1],
  85.       MLEFT,5,MWIDTH,10,               /* left top width height */
  86.       ITEMTEXT | ITEMENABLED | HIGHBOX | COMMSEQ,
  87.       0,                               /* mutual exclude */
  88.       (APTR) &newSubIT[0],NULL,        /* Text in the box */
  89.       'A', NULL
  90.    },
  91.    /* enlarge */
  92.    {  &newSubItem[2],
  93.       MLEFT,15,MWIDTH,10,              /* left top width height */
  94.       ITEMTEXT | ITEMENABLED | HIGHBOX | COMMSEQ,
  95.       0,                               /* mutual exclude */
  96.       (APTR) &newSubIT[1],NULL,        /* Text in the box */
  97.       'E', NULL
  98.    },
  99.    /* reduce */
  100.    {  &newSubItem[3],
  101.       MLEFT,25,MWIDTH,10,              /* left top width height */
  102.       ITEMTEXT | ITEMENABLED | HIGHBOX | COMMSEQ,
  103.       0,                               /* mutual exclude */
  104.       (APTR) &newSubIT[2],NULL,        /* Text in the box */
  105.       'R', NULL
  106.    },
  107.    /* shift */
  108.    {  NULL,
  109.       MLEFT,35,MWIDTH,10,              /* left top width height */
  110.       ITEMTEXT | ITEMENABLED | HIGHBOX | COMMSEQ,
  111.       0,                               /* mutual exclude */
  112.       (APTR) &newSubIT[3],NULL,        /* Text in the box */
  113.       'T', NULL
  114.    }
  115. };
  116.  
  117. struct MenuItem colorSubItem[] =
  118. #undef MWIDTH
  119. #define MWIDTH CHECKWIDTH+64+COMMWIDTH
  120. {  /* select */
  121.    {  &colorSubItem[1],
  122.       MLEFT,05,MWIDTH,10,              /* left top width height */
  123.       ITEMTEXT | ITEMENABLED | HIGHBOX,
  124.       0,                               /* mutual exclude */
  125.       (APTR) &clrsSubIT[0],NULL,       /* Text in the box */
  126.       NULL, NULL
  127.    },
  128.    /* modulo */
  129.    {  &colorSubItem[2],
  130.       MLEFT,15,MWIDTH,10,              /* left top width height */
  131.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT | CHECKED,
  132.       1<<2,                            /* mutual exclude */
  133.       (APTR) &clrsSubIT[1],NULL,       /* Text in the box */
  134.       NULL, NULL
  135.    },
  136.    /* ranges */
  137.    {  &colorSubItem[3],
  138.       MLEFT,25,MWIDTH,10,              /* left top width height */
  139.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT,
  140.       1<<1,                            /* mutual exclude */
  141.       (APTR) &clrsSubIT[2],NULL,       /* Text in the box */
  142.       NULL, NULL
  143.    },
  144.    /* palette */
  145.    {  NULL,
  146.       MLEFT,35,MWIDTH,10,              /* left top width height */
  147.       ITEMTEXT | ITEMENABLED | HIGHBOX | COMMSEQ,
  148.       0,                               /* mutual exclude */
  149.       (APTR) &clrsSubIT[3],NULL,       /* Text in the box */
  150.       'P', NULL
  151.    }
  152. };
  153.  
  154. #undef MWIDTH
  155. #define MWIDTH CHECKWIDTH+88+COMMWIDTH
  156.  
  157. struct MenuItem resSubItem[] =
  158. {  /* normal */
  159.    {  &resSubItem[1],
  160.       MLEFT,5,MWIDTH,10,              /* left top width height */
  161.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT | CHECKED | COMMSEQ,
  162.       1<<1 | 1<<2 | 1<<3,              /* mutual exclude */
  163.       (APTR) &resSubIT[0],NULL,        /* Text in the box */
  164.       '1', NULL
  165.    },
  166.    /* 1/2 */
  167.    {  &resSubItem[2],
  168.       MLEFT,15,MWIDTH,10,              /* left top width height */
  169.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT | COMMSEQ,
  170.       1<<0 | 1<<2 | 1<<3,              /* mutual exclude */
  171.       (APTR) &resSubIT[1],NULL,        /* Text in the box */
  172.       '2', NULL
  173.    },
  174.    /* 1/3 */
  175.    {  &resSubItem[3],
  176.       MLEFT,25,MWIDTH,10,              /* left top width height */
  177.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT | COMMSEQ,
  178.       1<<0 | 1<<1 | 1<<3,              /* mutual exclude */
  179.       (APTR) &resSubIT[2],NULL,        /* Text in the box */
  180.       '3', NULL
  181.    },
  182.    /* 1/4 */
  183.    {  &resSubItem[4],
  184.       MLEFT,35,MWIDTH,10,              /* left top width height */
  185.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT | COMMSEQ,
  186.       1<<0 | 1<<1 | 1<<2,              /* mutual exclude */
  187.       (APTR) &resSubIT[3],NULL,        /* Text in the box */
  188.       '4', NULL
  189.    },
  190.    /* fill in */
  191.    {  &resSubItem[5],
  192.       MLEFT,45,MWIDTH,15,              /* left top width height */
  193.       ITEMTEXT | ITEMENABLED | HIGHBOX | COMMSEQ,
  194.       0,                               /* mutual exclude */
  195.       (APTR) &resSubIT[4],NULL,        /* Text in the box */
  196.       'F', NULL
  197.    },
  198.    /* hi-res */
  199.    {  &resSubItem[6],
  200.       MLEFT,60,MWIDTH,10,              /* left top width height */
  201.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT | MENUTOGGLE | COMMSEQ,
  202.       0,                               /* mutual exclude */
  203.       (APTR) &resSubIT[5],NULL,        /* Text in the box */
  204.       'H', NULL
  205.    },
  206.    /* interlace */
  207.    {  &resSubItem[7],
  208.       MLEFT,70,MWIDTH,10,              /* left top width height */
  209.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT | MENUTOGGLE | COMMSEQ,
  210.       0,                               /* mutual exclude */
  211.       (APTR) &resSubIT[6],NULL,        /* Text in the box */
  212.       'I', NULL
  213.    },
  214.    /* borderless */
  215.    {  NULL,
  216.       MLEFT,80,MWIDTH,10,              /* left top width height */
  217.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT | MENUTOGGLE | COMMSEQ,
  218.       0,                               /* mutual exclude */
  219.       (APTR) &resSubIT[7],NULL,        /* Text in the box */
  220.       'B', NULL
  221. };
  222.  
  223. #undef MLEFT
  224.  
  225. struct MenuItem MyMenuItem[] =
  226. {  /* (C) menu: */
  227.     /* About Mandel... */
  228.    {  NULL,
  229.       0,0,120,10,                      /* left top width height */
  230.       ITEMTEXT | ITEMENABLED | HIGHBOX,
  231.       0,                               /* mutual exclude */
  232.       (APTR) &menuIText[0],NULL,       /* Text in the box */
  233.       NULL, NULL
  234.    },
  235.  
  236.    /* project menu: */
  237.    /* new */
  238. #undef MWIDTH
  239. #define MWIDTH COMMWIDTH+70
  240.    {  &MyMenuItem[2],
  241.       0,0,MWIDTH,10,                   /* left top width height */
  242.       ITEMTEXT | ITEMENABLED | HIGHBOX,
  243.       0,                               /* mutual exclude */
  244.       (APTR) &menuIText[1],NULL,       /* Text in the box */
  245.       NULL, (struct MenuItem *)&newSubItem[0]
  246.    },
  247.    /* open... */
  248.    {  &MyMenuItem[3],
  249.       0,10,MWIDTH,10,                  /* left top width height */
  250.       ITEMTEXT | ITEMENABLED | HIGHBOX | COMMSEQ,
  251.       0,                               /* mutual exclude */
  252.       (APTR) &menuIText[2],NULL,       /* Text in the box */
  253.       'O', NULL
  254.    },
  255.    /* save */
  256.    {  &MyMenuItem[4],
  257.       0,20,MWIDTH,10,                  /* left top width height */
  258.       ITEMTEXT | ITEMENABLED | HIGHBOX | COMMSEQ,
  259.       0,                               /* mutual exclude */
  260.       (APTR) &menuIText[3],NULL,       /* Text in the box */
  261.       'S', NULL
  262.    },
  263.    /* save as... */
  264.    {  &MyMenuItem[5],
  265.       0,30,MWIDTH,10,                  /* left top width height */
  266.       ITEMTEXT | ITEMENABLED | HIGHBOX,
  267.       0,                               /* mutual exclude */
  268.       (APTR) &menuIText[4],NULL,       /* Text in the box */
  269.       NULL, NULL
  270.    },
  271.    /* quit */
  272.    {  NULL,
  273.       0,45,MWIDTH,10,                  /* left top width height */
  274.       ITEMTEXT | ITEMENABLED | HIGHBOX | COMMSEQ,
  275.       0,                               /* mutual exclude */
  276.       (APTR) &menuIText[5],NULL,       /* Text in the box */
  277.       'Q', NULL
  278.    },
  279.  
  280.    /* options menu: */
  281. #undef MWIDTH
  282. #define MWIDTH 88
  283.    /* colors */
  284.    {  &MyMenuItem[7],
  285.       0,0,MWIDTH,10,                   /* left top width height */
  286.       ITEMTEXT | ITEMENABLED | HIGHBOX,
  287.       0,                               /* mutual exclude */
  288.       (APTR) &menuIText[6],NULL,       /* Text in the box */
  289.       NULL, colorSubItem
  290.    },
  291.    /* resolution */
  292.    {  &MyMenuItem[8],
  293.       0,10,MWIDTH,10,                  /* left top width height */
  294.       ITEMTEXT | ITEMENABLED | HIGHBOX,
  295.       0,                               /* mutual exclude */
  296.       (APTR) &menuIText[7],NULL,       /* Text in the box */
  297.       NULL, resSubItem
  298.    },
  299.    /* parameters */
  300.    {  NULL,
  301.       0,20,MWIDTH,10,                  /* left top width height */
  302.       ITEMTEXT | ITEMENABLED | HIGHBOX,
  303.       0,                               /* mutual exclude */
  304.       (APTR) &menuIText[8],NULL,       /* Text in the box */
  305.       NULL, NULL
  306.    },
  307.  
  308.    /* Functions Menu: */
  309. #undef MWIDTH
  310. #define MWIDTH CHECKWIDTH+104
  311.    /* Z^2 - C */
  312.    {  &MyMenuItem[10],
  313.       0,0,MWIDTH,10,                   /* left top width height */
  314.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT | CHECKED,
  315.       0x06,                            /* mutual exclude */
  316.       (APTR) &menuIText[9],NULL,       /* Text in the box */
  317.       NULL, NULL
  318.    },
  319.    /* z*c*(1-z) */
  320.    {  &MyMenuItem[11],
  321.       0,10,MWIDTH,10,                  /* left top width height */
  322.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT,
  323.       0x05,                            /* mutual exclude */
  324.       (APTR) &menuIText[10],NULL,      /* Text in the box */
  325.       NULL, NULL
  326.    },
  327.    /* z^3+z*(c-1)-c */
  328.    {  NULL,
  329.       0,20,MWIDTH,10,                  /* left top width height */
  330.       ITEMTEXT | ITEMENABLED | HIGHBOX | CHECKIT,
  331.       0x03,                            /* mutual exclude */
  332.       (APTR) &menuIText[11],NULL,      /* Text in the box */
  333.       NULL, NULL
  334.    }
  335. }; /* end of MyMenuItem[] */
  336.  
  337. #undef MWIDTH
  338.  
  339. struct Menu MandelMenu[] =
  340. {  {  &MandelMenu[1],
  341.       2,0,28,10,                       /* left top width height */
  342.       MENUENABLED,
  343.       " \xA9",                         /* (C) sign */
  344.       &MyMenuItem[0]
  345.    },
  346.    {  &MandelMenu[2],
  347.       30,0,70,10,                      /* left top width height */
  348.       MENUENABLED,
  349.       "Project",
  350.       &MyMenuItem[1]
  351.    },
  352.    {  &MandelMenu[3],
  353.       100,0,70,10,                      /* left top width height */
  354.       MENUENABLED,
  355.       "Options",
  356.       &MyMenuItem[6]
  357.    },
  358.    {  NULL,
  359.       170,0,90,10,                      /* left top width height */
  360.       MENUENABLED,
  361.       "Functions",
  362.       &MyMenuItem[9]
  363.    }
  364. };
  365.  
  366.